Web Development Methods: get(), set(), getAndIncrement(), incrementAndGet(), compareAndSet(), ইত্যাদি গাইড ও নোট

324

Atomics API JavaScript-এ থ্রেড-সেফ অপারেশন করার জন্য বিভিন্ন methods প্রদান করে, যা SharedArrayBuffer এবং typed arrays-এ কাজ করে। Atomics এর এই মেথডগুলো atomic (অখণ্ড) অপারেশন পরিচালনা করতে ব্যবহৃত হয়। এখানে গুরুত্বপূর্ণ কিছু মেথডের বিস্তারিত আলোচনা করা হলো।


Atomics এর গুরুত্বপূর্ণ মেথডসমূহ

১. Atomics.get(typedArray, index)

  • নির্দিষ্ট index থেকে একটি ডেটা রিড করে।
  • এটি থ্রেড-সেফভাবে কাজ করে, অর্থাৎ, কোনো থ্রেড এর মান পরিবর্তন করার আগে এটি ডেটা রিড করতে পারে।

উদাহরণ:

const buffer = new SharedArrayBuffer(16);
const typedArray = new Int32Array(buffer);

typedArray[0] = 42;
const value = Atomics.get(typedArray, 0); // ডেটা রিড
console.log(value); // আউটপুট: 42

২. Atomics.set(typedArray, index, value)

  • নির্দিষ্ট index এ একটি মান সেট করে।
  • এটি থ্রেড-সেফ পদ্ধতিতে ডেটা আপডেট করতে ব্যবহৃত হয়।

উদাহরণ:

const buffer = new SharedArrayBuffer(16);
const typedArray = new Int32Array(buffer);

Atomics.set(typedArray, 0, 100); // ডেটা সেট
console.log(typedArray[0]); // আউটপুট: 100

৩. Atomics.add(typedArray, index, value)

  • নির্দিষ্ট index এ একটি মান যোগ করে এবং পুরানো মানটি রিটার্ন করে।
  • এটি সাধারণত increment বা accumulation করার জন্য ব্যবহৃত হয়।

উদাহরণ:

const buffer = new SharedArrayBuffer(16);
const typedArray = new Int32Array(buffer);

Atomics.set(typedArray, 0, 10); // প্রাথমিক মান
const oldValue = Atomics.add(typedArray, 0, 5); // 5 যোগ করা
console.log(oldValue); // আউটপুট: 10
console.log(typedArray[0]); // আউটপুট: 15

৪. Atomics.sub(typedArray, index, value)

  • নির্দিষ্ট index থেকে একটি মান বিয়োগ করে এবং পুরানো মানটি রিটার্ন করে।
  • এটি decrement করার জন্য ব্যবহার করা হয়।

উদাহরণ:

const buffer = new SharedArrayBuffer(16);
const typedArray = new Int32Array(buffer);

Atomics.set(typedArray, 0, 20);
const oldValue = Atomics.sub(typedArray, 0, 5); // 5 বিয়োগ করা
console.log(oldValue); // আউটপুট: 20
console.log(typedArray[0]); // আউটপুট: 15

৫. Atomics.increment(typedArray, index)

  • নির্দিষ্ট index এ মান ১ দ্বারা বৃদ্ধি করে এবং পুরানো মানটি রিটার্ন করে।
  • এটি মূলত একটি বিশেষায়িত add() অপারেশন।

উদাহরণ:

const buffer = new SharedArrayBuffer(16);
const typedArray = new Int32Array(buffer);

Atomics.set(typedArray, 0, 5);
const oldValue = Atomics.add(typedArray, 0, 1); // increment
console.log(oldValue); // আউটপুট: 5
console.log(typedArray[0]); // আউটপুট: 6

৬. Atomics.compareExchange(typedArray, index, expectedValue, replacementValue)

  • যদি নির্দিষ্ট index এর মান expectedValue এর সমান হয়, তবে এটি replacementValue দিয়ে আপডেট করে।
  • এটি conditional update করতে ব্যবহৃত হয়।

উদাহরণ:

const buffer = new SharedArrayBuffer(16);
const typedArray = new Int32Array(buffer);

Atomics.set(typedArray, 0, 10);

const oldValue = Atomics.compareExchange(typedArray, 0, 10, 20);
console.log(oldValue); // আউটপুট: 10
console.log(typedArray[0]); // আউটপুট: 20

৭. Atomics.exchange(typedArray, index, value)

  • নির্দিষ্ট index এর পুরানো মানটি রিটার্ন করে এবং নতুন মান দিয়ে আপডেট করে।
  • এটি ডেটা প্রতিস্থাপনের জন্য ব্যবহার করা হয়।

উদাহরণ:

const buffer = new SharedArrayBuffer(16);
const typedArray = new Int32Array(buffer);

Atomics.set(typedArray, 0, 50);

const oldValue = Atomics.exchange(typedArray, 0, 100);
console.log(oldValue); // আউটপুট: 50
console.log(typedArray[0]); // আউটপুট: 100

৮. Atomics.wait(typedArray, index, value, timeout)

  • একটি থ্রেডকে অপেক্ষা করায় যতক্ষণ না নির্দিষ্ট index এর মান পরিবর্তিত হয় বা একটি নির্দিষ্ট সময় পেরিয়ে যায়।
  • এটি synchronization এর জন্য গুরুত্বপূর্ণ।

উদাহরণ:

const buffer = new SharedArrayBuffer(16);
const typedArray = new Int32Array(buffer);

Atomics.set(typedArray, 0, 0);

setTimeout(() => {
    Atomics.store(typedArray, 0, 1);
    Atomics.notify(typedArray, 0); // অপেক্ষা করা থ্রেডকে জাগানো
}, 1000);

Atomics.wait(typedArray, 0, 0); // থ্রেড অপেক্ষা করবে যতক্ষণ না মান পরিবর্তন হয়
console.log("Value updated!");

৯. Atomics.notify(typedArray, index, count)

  • একটি বা একাধিক থ্রেডকে জাগিয়ে তোলে, যারা wait() অবস্থায় রয়েছে।

উপসংহার

Atomics API-র এই মেথডগুলো multithreaded programming-এ shared memory ব্যবস্থাপনার জন্য অপরিহার্য। এগুলো thread-safe operations, synchronization, এবং data consistency নিশ্চিত করতে ব্যবহার করা হয়। বিশেষ করে, add(), compareExchange(), এবং wait() মেথডগুলো মাল্টি-থ্রেডিংয়ে খুব কার্যকর।

Content added By

Read more

Promotion

Are you sure to start over?

Loading...